/**
 * 
 */
package org.rk.core.common.base;

import java.util.List;
import java.util.Map;

import org.rk.core.common.bean.OrderBean;
import org.rk.core.common.bean.PageData;

/**
 * 
 * @author Administrator
 * 2015年7月22日
 * @param <T>
 */
public interface IBaseService<T> {
	/**
	 * 
	 * @方法描述：插入数据
	 * @param model
	 * @return
	 * 2015年7月22日 下午3:30:59
	 * @author：Administrator
	 */
	Long insertModel(T model);

	/**
	 * 
	 * @方法描述：删除数据
	 * @param model
	 * @return
	 * 2015年7月22日 下午3:31:24
	 * @author：Administrator
	 */
	boolean deleteModel(T model);

	/**
	 * 
	 * @方法描述：更新数据
	 * @param model
	 * @return
	 * 2015年7月22日 下午3:31:38
	 * @author：Administrator
	 */
	boolean updateModel(T model);

	boolean insertModelList(List<T> modelList);

	public T selectModel(String proName,Object proValue);
	public T selectModel(Long id);
	/**
	 * 
	 * @方法描述：获取数据集合
	 * @param mapObjs
	 * @return
	 * 2015年7月22日 下午3:31:57
	 * @author：Administrator
	 */
	List<T> selectModelList(Map<String, Object> mapObjs);

	/**
	 * @方法描述：
	 * @author:Cavion(曹仁道)
	 * @param bean
	 * @param conditionFields
	 * @return
	 * 2016年11月15日
	 */
	Integer batchDelete(T bean, String[] conditionFields);

	/**
	 * @方法描述：
	 * @author:Cavion(曹仁道)
	 * @param sql
	 * @return
	 * 2016年11月15日
	 */
	List<T> selectModelListBySql(String sql);

	/**
	 * @方法描述：
	 * @author:Cavion(曹仁道)
	 * @param mapObjs
	 * @param page
	 * @return
	 * 2016年11月15日
	 */
	PageData selectModelListPage(Map<String, Object> mapObjs, PageData page);

	PageData selectModelListPage(Map<String, Object> mapObjs, PageData page, List<OrderBean> orderList);

	List<T> selectModelList(Map<String, Object> mapObjs, List<OrderBean> orderList);

	boolean updateModel(T model, String[] fileds);
	

}
